// 0.导入axios
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
import store from '@/store'
import router from '@/router'
import { getToken } from './token'
import { Toast } from 'vant';
Vue.use(VueAxios, axios)

// 1.创建instance

const instance = axios.create({
    baseURL: 'http://localhost:1337',
    timeout: 10000
})

// 添加请求拦截器
instance.interceptors.request.use(function(config) {
    // 在发送请求之前做些什么
    if (getToken()) {
        if (config.hasToken)
            config.headers.authorization = `Bearer ${getToken()}`
    }
    return config;
}, function(error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(
    function(response) {
        // 对响应数据做点什么
        // console.dir(response.data.code);
        const code = response.data.code === 401
        if (code) {
            store.dispatch('logout')
            router.push('/login')
            Toast.fail('登录超时，请重新登录')
        }

        // 对响应错误做点什么
        return response;

    },
    function(error) {
        //接收返回的错误信息中的code
        // 如果code ===401   说明token失效   清除token  跳转登录页
        // console.dir(error.response);

        return Promise.reject(error);
    });

export default instance